package com.gs.netty.support.codec;

import com.alibaba.fastjson2.JSON;
import com.gs.netty.websocket.remoting.WebSocketInvocation;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageEncoder;
import io.netty.handler.codec.http.websocketx.BinaryWebSocketFrame;
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
import lombok.val;
import org.apache.commons.lang3.StringUtils;

import java.nio.charset.StandardCharsets;
import java.util.List;

/**
 *
 *  1.版本号 （1个字节）
 *  2.请求序号 （4个字节）
 *  3.消息类型 0=请求，1=响应
 *  4.指令长度  （4个字节，如果是响应（））
 *  5.指令正文  （N个字节）
 *  6.消息正文
 * WebSocket 消息内容解码器
 */
public class WebSocketSendMessageProtocolEncoder extends MessageToMessageEncoder<WebSocketInvocation> {


    @Override
    protected void encode(ChannelHandlerContext ctx, WebSocketInvocation msg, List<Object> out) throws Exception {


        TextWebSocketFrame textWebSocketFrame = new TextWebSocketFrame(JSON.toJSONString(msg));
        out.add(textWebSocketFrame);
    }
}
